package com.yz.common.handler;

import com.yz.common.resp.BaseResponse;
import com.yz.common.utils.ResultUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;


/**
 * Created With IntelliJ IDEA.
 * Descriptions:全局异常处理类
 * User:Mr.Du
 * Date:2024/3/20
 * Time:22:54
 */

/**
 * @ControllerAdvice 是一个用于全局控制器增强的注解，它能够应用到所有带有 @Controller
 * 或 @RestController 注解的控制器类中。使用 @ControllerAdvice 注解标记的类可以包含
 * @ExceptionHandler、@InitBinder 和 @ModelAttribute 方法，用于全局处理异常、
 * 自定义数据绑定、全局数据预处理等操作。
 */
@Slf4j
@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(value = {RuntimeException.class})
    @ResponseBody
    public BaseResponse handleRuntimeException(RuntimeException ex) {
        // 从异常中获取错误消息
        String errorMessage = ex.getMessage();
        // 返回包含错误消息的响应
        return  ResultUtils.error(HttpStatus.INTERNAL_SERVER_ERROR.value(), errorMessage);
    }
}
